package com.gwz.wxtime.chessboard.service;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.gwz.wxtime.chessboard.entity.*;
import com.gwz.wxtime.chessboard.util.PukeUtil;
import com.gwz.wxtime.core.consts.RedisKeyConst;
import com.gwz.wxtime.core.entity.base.BaseDTO;
import com.gwz.wxtime.core.entity.wx.GroupReceiveMessage;
import com.gwz.wxtime.core.service.BaseService;
import com.gwz.wxtime.core.util.WxUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

@Service
@Order(999)
@Slf4j
public class SkillService implements BaseService {

    List<String> newsKeywordsList = List.of("功能说明");

    @Override
    public boolean handGroupReceivedMessage(BaseDTO<BaseDTO<GroupReceiveMessage>> dto) {
        if (dto.getData().getData().getMsg().equals("功能说明")) {
            gameDesc(dto.getData().getData());
            return true;
        }
        if (dto.getData().getData().getMsg().equals("五子棋流程")) {
            WuziQiDesc(dto.getData().getData());
            return true;
        }
        if (dto.getData().getData().getMsg().equals("五子棋指令")) {
            WuziQiInstruction(dto.getData().getData());
            return true;
        }
        if (dto.getData().getData().getMsg().equals("斗地主流程")) {
            douDiZhuDesc(dto.getData().getData());
            return true;
        }
        if (dto.getData().getData().getMsg().equals("斗地主指令")) {
            douDiZhuInstruction(dto.getData().getData());
            return true;
        }
        return false;
    }

    private void douDiZhuInstruction(GroupReceiveMessage data) {
        WxUtil.sendMessage(data.getFromWxid(),
                WxUtil.at(data.getFinalFromWxid()) +
                        " 斗地主指令大全\n"
                        + "创建房间:  创建房间#房间号\n"
                        + "加入房间:   加入房间#房间号\n"
                        + "退出房间:   退出房间#房间号\n"
                        + "准备:   准备\n"
                        + "抢地主:   抢地主\n"
                        + "出:  出#3#4#5#6#7\n"
                        + "跳过:  跳过\n"
                        + "tips: 三人准备 游戏自动开始");

    }

    private void douDiZhuDesc(GroupReceiveMessage data) {
        WxUtil.sendMessage(data.getFromWxid(),
                "1. 需要三位玩家先加机器人好友,牌会通过私聊发送 \n" +
                        "2. 三位玩家,发送: '斗地主' \n" +
                        "3. 一位玩家发送: '创建房间#房间名' \n" +
                        "4. 另两位玩家发送: '加入房间#房间名' \n" +
                        "5. 任意一位玩家发送: '开始'  既开始游戏 \n" +
                        "6. 更多斗地主指令 发送: '斗地主指令' 查看");
    }

    private void WuziQiInstruction(GroupReceiveMessage data) {
        WxUtil.sendMessage(data.getFromWxid(), WxUtil.at(data.getFinalFromWxid()) + " 五子棋指令大全\n"
                + "创建房间:  创建房间#房间号\n"
                + "加入房间:   加入房间#房间号\n"
                + "退出房间:   退出房间\n"
                + "开始指令:   开始\n"
                + "悔棋指令:   悔棋\n"
                + "认输指令:   认输\n"
                + "设置五子棋文字显示:   设置显示#文字 / 设置显示#图片\n"
                + "下棋:  8h\n"
                + "tips: 开始需要等到房间人数够");
    }

    private void WuziQiDesc(GroupReceiveMessage data) {
        WxUtil.sendMessage(data.getFromWxid(), "1. 需要两位玩家,发送: '五子棋' \n" +
                "2. 一位玩家发送: '创建房间#房间名' \n" +
                "3. 另一位玩家发送: '加入房间#房间名' \n" +
                "4. 任意一位玩家发送: '开始'  既开始游戏 \n" +
                "5. 更多五子棋指令 发送: '五子棋指令' 查看");
    }

    private void gameDesc(GroupReceiveMessage data) {
        WxUtil.sendMessage(data.getFromWxid(), "1. 五子棋 发送:'五子棋流程' 查看更多介绍 \n" +
                "2. 斗地主 发送:'斗地主流程' 查看更多介绍 \n" +
                "3. 生成图片 发送: '@我 生成图片{内容}' \n" +
                "4. 聊天 发送: '@我{聊天内容}' \n" +
                "5. 清除聊天记忆 发送: '清除记忆' \n" +
                "6. 三种聊天模式之高冷 发送: '高冷模式' \n" +
                "7. 三种聊天模式之热情 发送: '热情模式' \n" +
                "8. 三种聊天模式之正常 发送: '正常模式' \n" +
                "9. 聊天规则 发送: '@模式' 或 '自动回复' 或 '禁言' \n" +
                "ps: 默认,热情, @模式"
        );

    }


}
